import express from 'express';
import cors from 'cors';
const app = express();
const port = 8082;

// 中间件
app.use(cors());
app.use(express.json());

// AI对话API
app.post('/api/v2/ai/chat', (req, res) => {
  console.log('AI Chat request:', req.body);
  
  const { message, userId, sessionId } = req.body;
  
  // 简单的AI回复逻辑
  let response = generateAIResponse(message);
  
  setTimeout(() => {
    res.json({
      code: 200,
      message: "success",
      data: {
        response: response,
        userId: userId,
        sessionId: sessionId,
        timestamp: Date.now()
      }
    });
  }, 500 + Math.random() * 1000); // 模拟AI思考时间
});

// 数字人API
app.post('/api/v2/digital-human/generateCall', (req, res) => {
  console.log('Generate digital human call:', req.body);
  
  const { aiAgentId } = req.body;
  
  // 验证智能体ID
  if (aiAgentId !== 'f97e8f48f6e64b679a977fb01bc9e28f') {
    return res.json({
      code: 400,
      message: `The specified agentId "${aiAgentId}" is not found.`,
      request_id: "error-" + Date.now()
    });
  }
  
  setTimeout(() => {
    res.json({
      code: 200,
      message: "success",
      data: {
        ai_agent_instance_id: "instance-" + Date.now(),
        channel_id: "channel-" + Date.now(),
        ai_agent_user_id: "agent-user-" + Date.now(),
        rtc_auth_token: "rtc-token-" + Date.now(),
        request_id: "request-" + Date.now(),
        agent_type: "AvatarAgent",
        video_url: "https://digital-human-video.com/stream"
      }
    });
  }, 1000);
});

// 健康检查
app.get('/api/v2/digital-human/health', (req, res) => {
  res.json({
    code: 200,
    message: "success",
    data: {
      status: "UP",
      service: "digital-human-ai-chat",
      timestamp: Date.now()
    }
  });
});

// AI回复生成函数
function generateAIResponse(message) {
  const responses = {
    // 问候语
    '你好': '您好！我是AI数字人助手，很高兴为您服务！',
    '您好': '您好！我是AI数字人助手，很高兴为您服务！',
    'hello': 'Hello! I am an AI digital human assistant, nice to meet you!',
    
    // 自我介绍
    '介绍': '我是一个AI数字人，可以与您进行自然对话，回答问题，提供帮助和建议。',
    '你是谁': '我是AI数字人助手，基于先进的人工智能技术，可以理解和回应您的问题。',
    '自我介绍': '我是AI数字人，具有语音识别、自然语言理解和语音合成能力，可以为您提供智能对话服务。',
    
    // 功能介绍
    '你能做什么': '我可以与您进行语音对话、回答问题、提供信息查询、给出建议，还能进行简单的任务协助。',
    '功能': '我的主要功能包括：语音对话、问题解答、信息查询、学习辅导、生活建议等。',
    '能力': '我具备语音识别、自然语言处理、知识问答、对话生成等多种AI能力。',
    
    // 天气相关
    '天气': '抱歉，我目前无法获取实时天气信息。建议您查看天气应用或询问"今天天气怎么样"。',
    '今天天气': '我无法获取当前的天气数据，建议您查看手机天气应用或天气网站。',
    
    // 时间相关
    '时间': `现在的时间是 ${new Date().toLocaleString('zh-CN')}`,
    '几点': `现在是 ${new Date().toLocaleTimeString('zh-CN')}`,
    '日期': `今天是 ${new Date().toLocaleDateString('zh-CN')}`,
    
    // 学习相关
    '学习': '我很乐意帮助您学习！请告诉我您想学习什么内容，我会尽力为您解答。',
    '教学': '我可以为您提供各种学科的基础知识讲解，请告诉我您感兴趣的主题。',
    '作业': '我可以帮助您理解作业题目，提供解题思路，但建议您独立完成作业。',
    
    // 情感支持
    '谢谢': '不客气！很高兴能够帮助您。还有其他问题吗？',
    '感谢': '不用谢！这是我应该做的。有什么其他需要帮助的吗？',
    '再见': '再见！期待下次与您对话。祝您生活愉快！',
    '拜拜': '拜拜！有需要随时找我聊天哦！',
    
    // 默认回复
    'default': [
      '这是一个很有趣的问题，让我想想...',
      '我理解您的意思，不过我需要更多信息才能更好地回答。',
      '这个话题很有意思，您能详细说说吗？',
      '我正在学习中，这个问题对我来说有点挑战性。',
      '感谢您的提问，我会努力给出更好的回答。'
    ]
  };
  
  // 简单的关键词匹配
  const lowerMessage = message.toLowerCase().trim();
  
  for (const [key, value] of Object.entries(responses)) {
    if (key !== 'default' && (lowerMessage.includes(key) || message.includes(key))) {
      return value;
    }
  }
  
  // 如果没有匹配到，返回默认回复
  const defaultResponses = responses.default;
  return defaultResponses[Math.floor(Math.random() * defaultResponses.length)];
}

// 错误处理
app.use((err, req, res, next) => {
  console.error('Error:', err);
  res.status(500).json({
    code: 500,
    message: "Internal server error",
    error: err.message
  });
});

// 404处理
app.use((req, res) => {
  res.status(404).json({
    code: 404,
    message: "API not found",
    path: req.path
  });
});

// 启动服务器
app.listen(port, () => {
  console.log(`🚀 AI Chat Server running at http://localhost:${port}`);
  console.log('📋 Available endpoints:');
  console.log('  POST /api/v2/ai/chat - AI对话');
  console.log('  POST /api/v2/digital-human/generateCall - 生成数字人通话');
  console.log('  GET  /api/v2/digital-human/health - 健康检查');
  console.log('');
  console.log('🎤 支持真实语音识别和AI对话');
  console.log('🤖 集成数字人视频显示');
  console.log('🔊 支持语音合成播放');
});

export default app;
